// 给定一个经过编码的字符串s，要求返回s经过解码之后的字符串

// 编码规则：k[encoded_string],encoded_string为字符串，k为整数，表示encoded_string重复k次

function decodeString(s) {
    // 保存左括号前已经解码的字符串
    let stack1 = []
    // 存储左括号前的数字
    let stack2 = []
    // 存储待解码的字符串
    let res = ''
    // num存储当前数字
    let num = 0
    for (let i = 0; i < s.length; i++) {
        if (s[i] === '[') {
            stack1.push(res)
            stack2.push(num)
            res = ''
            num = 0
        } else if (s[i] === ']') {
            let cur_res = stack1.pop()
            let cur_num = stack2.pop()
            res = cur_res + res.repeat(cur_num)
        } else if(s[i] >= 0 && s[i] <= 9) {
            num = num * 10 + Number(s[i])
        } else {
            res += s[i]
        }
    }
    return res
}

let s = "3[a2[c]]"
console.log(decodeString(s))

